package com.hunt.framework.config;

import com.hunt.common.utils.StringUtils;
import org.apache.shiro.cache.ehcache.EhCacheManager;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;

/**
 * @program: hunt-lx
 * @description: shiro核心框架
 * @author: Lx
 * @create: 2019-02-01 10:52
 **/
//@Configuration
public class ShiroConfig
{
    /**
     * session超时时间，单位为毫秒（默认30分钟）
     */
    @Value("${shiro.session.expireTime}")
    private int expireTime;
    @Value("${shiro.session.validationInterval}")
    /**
     *  相隔多久检查一次session的有效性，单位毫秒，默认就是10分钟
     */
    private int validationInterval;
    /**
     * 验证码开关
     */
    @Value("${shiro.user.captchaEnabled}")
    private boolean captchaEnabled;
    /**
     * 验证码类型
     */
    @Value("${shiro.user.captchaType}")
    private String captchaType;
    /**
     * 设置Cookie的域名
     */
    @Value("${shiro.cookie.domain}")
    private String domain;
    /**
     * 设置cookie的有效访问路径
     */
    @Value("${shiro.cookie.path}")
    private String path;
    /**
     * 设置HttpOnly属性
     */
    @Value("${shiro.cookie.httpOnly}")
    private boolean httpOnly;
    /**
     * 设置Cookie的过期时间，秒为单位
     */
    @Value("${shiro.cookie.maxAge}")
    private int maxAge;
    /**
     * 登录地址
     */
    @Value("${shiro.user.loginUrl}")
    private String loginUrl;
    /**
     * 权限认证失败地址
     */
    @Value("${shiro.user.unauthorizedUrl}")
    private String unauthorizedUrl;

    /**
     * 缓存管理器 使用Ehcache实现
     */
    @Bean
    public EhCacheManager getEhCacheManager()
    {
        net.sf.ehcache.CacheManager cacheManager = net.sf.ehcache.CacheManager.getCacheManager("hunt");
        EhCacheManager ehCacheManager = new EhCacheManager();
        if (StringUtils.isNull(cacheManager))
        {
            ehCacheManager.setCacheManagerConfigFile("classpath:ehcache/ehcache-shiro.xml");
            return ehCacheManager;
        }
        else
        {
            ehCacheManager.setCacheManager(cacheManager);
            return ehCacheManager;
        }
    }

    /**
     * 自定义Realm
     */
//    public

    /**
     * 自定义sessionDAO会话
     */

    /**
     * 自定义sessionFactory会话
     */

    /**
     * 自定义sessionFactory调度器
     */

    /**
     * 会话管理器
     */

    /**
     * 会话管理器
     */

    /**
     * 安全管理器
     */

    /**
     * 退出过滤器
     */

    /**
     * Shiro过滤器配置
     */

    /**
     * 自定义在线用户处理过滤器
     */

    /**
     * 自定义在线用户同步过滤器
     */

    /**
     * 自定义验证码过滤器
     */

    /**
     * cookie 属性设置
     */

    /**
     * 记住我
     */

    /**
     * thymeleaf模板引擎和shiro框架的整合
     */

    /**
     * 开启Shiro注解通知器
     */
}

